This version adapts to the patterns present (better for new data but not more readable)
# days_version = "full"days_version ="abbreviation"days_letters = ['M', 'T', 'W', 'H', 'F']days_list_full = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']days_list_abbrev = ['Mon', 'Tues', 'Wed', 'Thurs', 'Fri']# Using Pandas Series since you can use slice notation on them for day ranges with dashesif days_version.lower() =="full": classdays_series = pd.Series(dict(zip(days_letters, days_list_full)))else: classdays_series = pd.Series(dict(zip(days_letters, days_list_abbrev)))classdays_dict = {}for day_pattern in students_advisors_df.get_column('Pat').unique().to_list():if day_pattern isnotNone: # There are some null day patterns day_pattern_noTH = day_pattern.replace('TH','H') # Thurs only two-character abbrevif'-'in day_pattern_noTH:# Handle patterns like 'M-W', 'T-H', etc. match = re.search(r'([A-Z])-([A-Z])', day_pattern_noTH) classdays_dict[day_pattern] = classdays_series[slice(match.group(1),match.group(2))].to_list()else:# Handle single day patterns like 'MWF', 'TTH', etc. classdays_dict[day_pattern] = classdays_series[list(day_pattern_noTH)].to_list()classdays_dict